/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package negocio;

import controladoresJPA.LigaUsuarioConsumidorJpaController;
import java.util.List;
import javax.annotation.Resource;
import javax.ejb.EJBContext;
import javax.ejb.Stateless;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.faces.bean.ManagedBean;
import modelo.LigaUsuarioConsumidor;

/**
 *
 * @author Francisco
 */
@ManagedBean(name="ligarUsuarioBI")
@Stateless
@TransactionManagement(TransactionManagementType.BEAN)
public class LigarUsuarioBI {
    @Resource
    private EJBContext eJBContext;
    
    public void crearLiga(LigaUsuarioConsumidor ligaUsuarioConsumidor) throws Exception{
        try{
            LigaUsuarioConsumidorJpaController lucjpc = new LigaUsuarioConsumidorJpaController(eJBContext.getUserTransaction(), EFServicio.getEmf());
            lucjpc.create(ligaUsuarioConsumidor);
        }catch(Exception e){
            e.printStackTrace();
            throw new Exception("Error al crear la liga");
        }
    }
    
    public List<LigaUsuarioConsumidor> buscarLigasPorUsuarioEstatus(Integer idUsuario, String estatus) throws Exception{
        try{
            LigaUsuarioConsumidorJpaController lucjpc = new LigaUsuarioConsumidorJpaController(eJBContext.getUserTransaction(), EFServicio.getEmf());
            List<LigaUsuarioConsumidor> ligas = lucjpc.findLigaUsuarioConsumidorByUsuario(idUsuario,estatus);
            return ligas;
        }catch(Exception e){
            e.printStackTrace();
            throw new Exception("Error al buscar las ligas");
        }
    }
    
    public void aceptarRechazarLiga(Integer idLigaUsuario, String estatus)throws Exception{
        try{
            if(estatus.equals("A")||estatus.equals("R")){
                LigaUsuarioConsumidorJpaController lucjpc = new LigaUsuarioConsumidorJpaController(eJBContext.getUserTransaction(), EFServicio.getEmf());
                LigaUsuarioConsumidor lu = lucjpc.findLigaUsuarioConsumidor(idLigaUsuario);
                lu.setEstatus(estatus);
                lucjpc.edit(lu);
            }else{
                throw new Exception("No es estatus valido");
            }
        }catch(Exception e){
            e.printStackTrace();
            throw new Exception("Error al aceptar/rechazar las ligas");
        }
    }
    
    public List<LigaUsuarioConsumidor> buscarLigaPorUsuarioDestino(Integer idUsuario, Integer idUsuarioDestino) throws Exception{
        try{
            LigaUsuarioConsumidorJpaController lucjc = new LigaUsuarioConsumidorJpaController(eJBContext.getUserTransaction(), EFServicio.getEmf());
            return lucjc.findLigaConsumUsuarioDestByUsuario(idUsuario, idUsuarioDestino);
        }catch(Exception e){
            e.printStackTrace();
            throw new Exception("Error al buscar las ligas");
        }
    }
    
    public void actualizaPermisos(Integer idLiga, Boolean operarIngreso, Boolean operarConsumo)throws Exception{
        try{
            LigaUsuarioConsumidorJpaController lucjc = new LigaUsuarioConsumidorJpaController(eJBContext.getUserTransaction(), EFServicio.getEmf());
            LigaUsuarioConsumidor lu = lucjc.findLigaUsuarioConsumidor(idLiga);
            lu.setPermisoIngreso((operarIngreso)?1:0);
            lu.setPermisoConsumo((operarConsumo)?1:0);
            lucjc.edit(lu);
        }catch(Exception e){
            e.printStackTrace();
            throw new Exception("Error al actualizar la liga");
        }
    }
}
